package com.tbit.uqbike.service.business;


import com.tbit.uqbike.object.pojo.UserBlackList;
import com.tbit.uqbike.object.pojo.vo.BatchOperationMsgVO;
import com.tbit.uqbike.object.value.LoginInfo;

import java.util.List;

/**
 * 用户黑名单service
 *
 * @author Leon
 * 2017年2月24日 下午4:09:17
 */
public interface UserBlackListService {
    /**
     * 添加
     *
     * @param userBlackList
     * @param isSend
     */
    void insert(UserBlackList userBlackList, Integer isSend);


    /**
     * 更新
     *
     * @param userBlackList
     */
    void update(UserBlackList userBlackList);

    /**
     * 根据用户id查询
     *
     * @param userId
     * @return
     */
    UserBlackList getByUserId(Integer userId);

    /**
     * 根据身份证号码查询
     *
     * @param
     * @return
     */
    List<UserBlackList> getByIdNo(Integer accountId, String idNo);

    /**
     * 根据手机号码查询
     *
     * @param phone
     * @return
     */
    List<UserBlackList> getByPhone(Integer accountId, String phone);

    /**
     * 删除
     *
     * @param
     */
    void del(Integer userId, String idNo, String phone);

    /**
     * 查询总数
     *
     * @return
     */
    Integer queryCount(Integer accountId, String phone, String IdNo, Integer blockType);

    /**
     * 分页查询
     *
     * @return
     */
    List<UserBlackList> queryPage(Integer accountId, String phone, String IdNo, Integer blockType, Integer rowCount, Integer pageNO);

    /**
     * 清除失效黑名单
     */
    void delExpire();

    /**
     * 查询黑名单按区域显示
     *
     * @param accountId   品牌id
     * @param adAccountId 区域id
     * @param pageNO      页码数
     * @param rowCount    每页大小
     * @return
     */
    List<UserBlackList> pageByAdAccountId(Integer accountId, Integer adAccountId, Integer pageNO, Integer rowCount);

    /**
     * 查询黑名单按区域显示总数
     *
     * @param accountId
     * @param adAccountId
     * @return
     */
    Integer countByAdAccountId(Integer accountId, Integer adAccountId);

    /**
     * @param userId
     * @param isSend
     * @return void
     * @Description: 判断是否将消息推送给用户
     * @createDate 2020/11/2 9:08
     */
    void sendMessage(Integer userId, Integer isSend);

    /**
     * 通过批量添加手机号拉黑用户
     *
     * @param userBlackList 用户黑名单对象
     * @param accountId     区域id
     * @param phones        手机号码字符串，中间以 , 拼接
     * @param endTime       黑名单失效时间
     * @param loginInfo     用户登录信息
     * @param actionType    null/0 = 检测  1-忽略添加  2-强制更新
     */
    BatchOperationMsgVO<String> setUserBlackListByPhoneBatchV2(UserBlackList userBlackList,
                                                               Integer accountId, String phones,
                                                               Long endTime, LoginInfo loginInfo, Integer actionType);


    /**
     * 根据用户id修改黑名单
     *
     * @param userBlackList .
     */
    void updateEntityByUserId(UserBlackList userBlackList);
}